<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <!-- <table>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </table> -->
  <script>
    // 时间复杂度 空间复杂度
    // 时间复杂度是指一个算法运行的次数
    // 冒泡排序
    // const arr = [2,4,8,5,1];
    // 次数是4+3+2+1=10次
    // n个数字是n-1 + n-2 + n-3 + ... + 1
    // 总次数是 (1 + (n - 1)) * (n - 1) / 2
    // n的平方/2 + n/2
    // 冒泡排序的时间复杂度是 O(n平方)



    // 作业
    // 1. 农场里面有鸡和兔，一共有30个头，78条腿。有几只鸡和几只兔
    // 假设有i只鸡
    // let count = 0;
    for (let i = 0; i <= 30; i++) {
      // count++;
      if (2 * i + 4 * (30 - i) === 78) {
        console.log(`一共有${i}只鸡和${30 - i}只兔`);
        // 找到正确的答案以后，退出循环
        // 减少循环的次数，在数据量比较大的时候，比较有效
        break;
      }
    };
    // console.log(count);
    






    // 2. 用document.write写一个99乘法表
    let str = "<table border='1'>";
    for (let i = 1; i <= 9; i++) {
      str += "<tr>"
      for (let j = 1; j <= i; j++) {
        str += `<td>${i} * ${j} = ${i * j}</td>`
      }
      str += "</tr>"
    }
    str += "</table>";
    document.write(str);







    // 3. 有一个数组[1,2,3,4,5,6,7]。将偶数乘2，奇数不变
    // [1,2,3,4,5,6,7] -> [1,4,3,8,5,12,7]
    // 映射 map
    const arr = [1,2,3,4,5,6,7];
    const arr2 = arr.map((item) => {
      // if (item % 2) {
      //   return item;
      // } else {
      //   return item * 2;
      // }
      // 当if和else里面都只有一句话的时候。用三元表达式最方便
      // 当只有if，而且只有一句话的时候。用短路运算最方便
      return item % 2 ? item : item * 2;
    })
    console.log(arr2);
    









    // 4. [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -> [3,4,5,6,7]
    const arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    const arr4 = arr3.filter((item) => {
      return item > 2 && item < 8
    })
    console.log(arr4);
    








    // 5. const people = [
    //   { name: 'Alice', age: 25 },
    //   { name: 'Bob', age: 30 },
    //   { name: 'Charlie', age: 25 }
    // ];
    // -> ["Alice", "Bob", "Charlie"]
    const people = [
      { name: 'Alice', age: 25 },
      { name: 'Bob', age: 30 },
      { name: 'Charlie', age: 25 }
    ]
    const newPeople = people.map(item => {
      return item.name;
    })
    console.log(newPeople);
    














    // 6. ["a","b","c","c","a","b","a","a","a"]
    // -> {a: 5, b: 2, c: 2}
    const arr5 = ["a","b","c","c","a","b","a","a","a"];
    // const obj = {};
    // for (let i = 0; i < arr5.length; i++) {
    //   if (obj[arr5[i]]) {
    //     obj[arr5[i]] += 1;
    //   } else {
    //     obj[arr5[i]] = 1;
    //   }
    // }
    // console.log(obj);

    const arr6 = arr5.reduce((result, item) => {
      result[item] ? result[item] += 1 : result[item] = 1;
      return result;
    }, {})
    console.log(arr6);
    
    

    




  </script>
</body>
</html>